//
//  Wuman.swift
//  one
//
//  Created by huangfeng on 2018/5/2.
//  Copyright © 2018年 huangfeng. All rights reserved.
//

import UIKit

class Wuman: NSObject {

    
//    @objc 作用
//
//    1 fileprivate 或者 private  保证方法私有 能在同一个类 或者 同一个文件（extension）中访问这个方法 如果定义为private  那么只能在一个类中访问 不能在类扩展中访问
//
//    2 允许这个函数在“运行时”通过oc的消息机制调用
    
    // 定义模型的时候 如果是对像  基本都是可选类型
    // 如果是 基本数据类型  不能设置成可选的  而且需要设置初始值 因为 kvc 是oc的方法 转化的时候 oc 的基本数据类型 要转 NSNUMBER
    @objc var name: String?
    var age: Int = 0
    
    //private 属性  方法  禁止外部使用   如果需要使用kvc 设置数值 不能设置成 private 否则程序会崩溃
    private var title: String?
    
    init(dict: [String: Any]){
        super.init()
        setValuesForKeys(dict)
    }
    
    class func propertyList() -> [String] {
        
        var count: UInt32 = 0
        
//        /Users/huangfeng/project/swiftlee/one/one/Wuman.swift:37:38: Cannot pass immutable value as inout argument: function call returns immutable value
        class_copyPropertyList(self, &count)
        print("属性数量 \(count)")
        
        return[]
    }
    
    // kvc 设置属性的时候 字典中 多余的值不会设置 也不会导致崩溃
    override func setValue(_ value: Any?, forUndefinedKey key: String) {
        
    }
}
